package com.wx.service;


import com.wx.domain.dto.AuthUserDto;
import com.wx.domain.vo.DicTreeVo;
import com.wx.entity.SysDict;

import java.util.List;

/**
 * Title: SysDictService<br>;
 * Description: 数据字典<br>;
 * Copyright: Copyright (c) 2017<br>;
 * Company: <br>;
 *
 * @author xinglinglove1029@163.com<br>
 * 2018/11/21 16:50
 */
public interface SysDictService extends BaseService<SysDict> {

    /**
     * <p>Title:     getDicTree. </p>
     * <p>Description 初始化数据字典树</p>
     *
     * @return List<DicTreeVo>
     * @Author <a href="xinglinglove1029@163.com"/>杨文生</a>
     * @since 2018/11/21 17:07
     */
    List<DicTreeVo> getDicTree();

    /**
     * <p>Title:     getDicById. </p>
     * <p>Description 根据id查询数据字典信息</p>
     *
     * @param dicId String
     * @return SysDictionary
     * @Author <a href="xinglinglove1029@163.com"/>杨文生</a>
     * @since 2018/11/21 17:07
     */
    SysDict getDicById(String dicId);

    /**
     * <p>Title:     deleteDicById. </p>
     * <p>Description 根据id删除数据字典信息</p>
     *
     * @param dicId String
     * @return int
     * @Author <a href="xinglinglove1029@163.com"/>杨文生</a>
     * @since 2018/11/21 17:07
     */
    int deleteDicById(String dicId, AuthUserDto authUserDto);

    /**
     * <p>Title:     modifyDic. </p>
     * <p>Description 修改删除数据字典信息</p>
     *
     * @param dic SysDictionary
     * @return int
     * @Author <a href="xinglinglove1029@163.com"/>杨文生</a>
     * @since 2018/11/21 17:07
     */
    int modifyDic(SysDict dic, AuthUserDto authUserDto);

    /**
     * <p>Title:     saveDicInfo. </p>
     * <p>Description 保存数据字典信息</p>
     *
     * @param dic SysDictionary
     * @return int
     * @Author <a href="xinglinglove1029@163.com"/>杨文生</a>
     * @since 2018/11/21 17:07
     */
    int saveDicInfo(SysDict dic, AuthUserDto authUserDto);

    /**
     * <p>Title:      getChildrenById. </p>
     * <p>Description 根据父编码查询数据字典信息</p>
     *
     * @param parentCode String
     * @return Wrapper
     * @Author <a href="xinglinglove1029@163.com"/>杨文生</a>
     * @since 2019/9/26 16:28
     */
    List<SysDict> getChildrenByCode(String parentCode);


    List<SysDict> selectAllDict();

    /**
     * <p>Title:      recursionChildrenByParentCode. </p>
     * <p>Description 根据父编码递归查询数据字典信息</p>
     *
     * @param       parentCode  String
     * @return        Wrapper
     * @Author        <a href="xinglinglove1029@163.com"/>杨文生</a>
     * @since     2019/9/26 16:28
     */
    List<SysDict> recursionChildrenByParentCode(String parentCode);

    /**
     * <p>Title:      getDicByCode. </p>
     * <p>Description 根据编码查询数据字典信息</p>
     *
     * @param         code String
     * @return       SysDict
     * @Author        <a href="xinglinglove1029@163.com"/>杨文生</a>
     * @since     2020/9/23 17:42
     */
    SysDict getDicByCode(String code);
}
